import sensor, image, time, display
from pyb import UART

# 初始化摄像头（保持您原有设置）
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(False)
sensor.set_auto_whitebal(False)
lcd = display.SPIDisplay()

# 初始化串口（保持不变）
uart = UART(3, 115200)

# 保持您原有的颜色阈值
paper_threshold = (14, 45, 22, 122, -128, 127)

clock = time.clock()

while True:
    clock.tick()
    img = sensor.snapshot()

    # 保持您原有的blob检测逻辑
    blobs = img.find_blobs([paper_threshold])

    if blobs:
        # 保持原有的最大色块选择
        largest_blob = max(blobs, key=lambda b: b.pixels())

        # 新增面积获取（添加这一行）
        area = largest_blob.area()

        # 保持原有的坐标获取和绘制（修改颜色为红色）
        x = largest_blob.cx()
        y = largest_blob.cy()
        x1, y1, w, h = largest_blob.rect()
        img.draw_rectangle(x1, y1, w, h, color=(255, 0, 0))  # 修改为红色

        # 绘制中心红色十字架
        img.draw_cross(x, y, color=(255, 0, 0), size=10, thickness=2)

        # 修改数据格式，添加面积（仅修改这一行）
        data = "{},{},{}".format(x, y, area)  # 新增面积字段
        uart.write(data + '\n')
        print(x1, y1, area)  # 保持原有的调试输出

        # 保持显示逻辑不变
        lcd.write(img)
    else:
        # 修改无效数据格式（添加面积0）
        uart.write("-1,-1,0\n")  # 新增第三个字段
        lcd.write(img)

    # 保持原有的fps打印
    # print(clock.fps())
